package com.softeem.lam;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;

/**
 * 一般使用在集合的遍历上
 */
public class Demo_02 {
    public static void main(String[] args) {
        List<Dog> dogs = new ArrayList<Dog>();
        dogs.add(new Dog("大黄", 3, "黄色"));
        dogs.add(new Dog("大黑", 5, "黑色"));
        dogs.add(new Dog("二哈", 2, "白色"));
        dogs.add(new Dog("小黑", 1, "黑色"));

        //一般在进行遍历输出的时候,我们可以使用的方法比较多
        for(Dog  d : dogs){
            System.out.println(d);
        }

        System.out.println("---------------------------------");

        //使用迭代器
        Iterator<Dog> it =dogs.iterator();
        while(it.hasNext()){
            Dog d = it.next();
            System.out.println(d);
        }

        System.out.println("---------------------------------");
        //使用匿名内部类创建的接口Consumer
        Consumer<Dog> action = new Consumer<Dog>() {
            @Override
            public void accept(Dog dog) {
                System.out.println(dog);
            }
        };

        //因为我们现在使用lambda表达式,所以可以省略掉接口名所以现在使用简写的方法进行处理
        dogs.forEach(action);
        System.out.println("---------------------------------");

        //使用lambda表达式
        dogs.forEach((t) -> System.out.println(t));
        System.out.println("---------------------------------");
        dogs.forEach(t -> System.out.println(t));
        System.out.println("---------------------------------");
        //简写
        dogs.forEach(System.out::println);
        System.out.println("---------------------------------");
    }
}
